const { io } = require('socket.io-client');
const jwt = require('jsonwebtoken');
const accessTokenSecret = 'abc123'; // 与服务器端保持一致

// 生成一个新的有效token
const user = {
    id: '1', // 用户ID，确保数据库中有这个用户
    username: 'testuser'
};

const token = jwt.sign(user, accessTokenSecret, {
    expiresIn: '7d' // 有效期设为7天便于测试
});

console.log('生成的测试Token:', token);
console.log('尝试连接到WebSocket服务器...');

// 创建WebSocket连接
const socket = io('ws://localhost:3000', {
    query: { token },
    transports: ['websocket']
});

// 连接事件
socket.on('connect', () => {
    console.log('WebSocket连接成功！Socket ID:', socket.id);
    socket.emit('ping-test', { timestamp: Date.now() });
});

// 接收消息
socket.on('message', (data) => {
    console.log('收到消息:', data);
});

// 认证成功事件
socket.on('auth-success', (data) => {
    console.log('认证成功:', data);
});

// 认证失败事件
socket.on('auth-error', (error) => {
    console.error('认证失败:', error);
});

// 错误事件
socket.on('error', (error) => {
    console.error('连接错误:', error);
});

// 断开连接事件
socket.on('disconnect', (reason) => {
    console.log('连接断开:', reason);
});

// 心跳响应
socket.on('pong-test', (data) => {
    console.log('收到心跳响应:', data);
});